//
// Created by cybaster on 25-6-7.
//

#pragma once
#include "HumanoidRobotController.h"
#include "legged_wbc/WbcBase.h"

class HumanoidRobotWBCController : public HumanoidRobotController {
public:
  explicit HumanoidRobotWBCController(
      LeggedRobotInterface &leggedRobotInterface);

  ~HumanoidRobotWBCController() override = default;

  void setWBCController(const std::shared_ptr<legged::WbcBase> &wbcController);

protected:
  vector_t calculateJointAccAndTorque(vector_t optimizedState,
                                vector_t optimizedInput,
                                size_t plannerMode) override;

private:
  std::shared_ptr<legged::WbcBase> wbc_;
};
